1. Field of the Invention
The present invention relates to a validation process involving a SCSI host and a SCSI target within computer environments, and, more particularly, to the use of computer-related processes resident at the host computer environment to modify the parameters and behavior of target devices in a SCSI environment.
2. Description of the Related Art
The capabilities of host computer environments have expanded significantly with the increased development of peripheral devices for attachment to the host computer. A variety of peripheral components are now available for use by the end user applications. For example, the peripheral environment may include external devices such as disk arrays, tapes, CD-ROMs, printers, network controllers, optical scanners, and various other apparatus that provide a wide range of functionality.
The external peripheral environment is typically connected to the host computer environment using a suitable bus architecture. The Small Computer System Interface (SCSI) technology is one example of such a bus topology. In a typical arrangement, the host computer is configured with a host adapter provided in the form of a SCSI controller to provide the proper interfacing between the host bus (such as PCI) and the SCSI environment. The host computer will also include suitable SCSI device drivers for the installed SCSI peripheral devices.
The SCSI communications protocol employs a transaction process between a SCSI device configured as an initiator and a SCSI device configured as a target. Any SCSI device can be equipped with both functionalities. The SCSI initiator originates a request for an action or task to be performed, while a SCSI target receives and performs the requested task as expressed in a suitable command structure. For this purpose, SCSI targets typically include an intelligent controller that enables it to perform the initiator-developed commands in a manner relatively independently of the initiator. A SCSI bus is used to transport data, command, and control information between the initiator and target.
One advantage of SCSI implementations is that the host CPU need not expend valuable processing cycles in monitoring and managing operations involving the SCSI target devices. For example, in a typical I/O request such as a read/write operation, a high-level user program simply generates the I/O request at the application layer. The operating system (OS) then forwards the request to the suitable host-based SCSI disk driver. This hand-off from the OS to the appropriate SCSI driver entry point typically represents the extent of the participation of the CPU in terms of fulfilling the request. The SCSI environment itself is configured to complete the operation without further intervention or assistance from the CPU.
For example, the SCSI disk driver translates the I/O request into a suitable SCSI command structure and forwards the SCSI commands to a SCSI host bus adapter (HBA). The SCSI HBA then forwards the commands to the specified SCSI target. Due to the intelligence of SCSI target devices, little intervention at this point is needed by the initiator to ensure completion of the I/O request. The target then completes the task as instructed.
In a host-based SCSI implementation, the host computer environment typically configures the SCSI host adapter as an initiator-type device, while the external components of the peripheral environment serve as target-type SCSI devices. For example, in a conventional computing environment, the SCSI initiator is provided in the form of a SCSI controller or SCSI host adapter resident on a host computer platform.
However, one persistent problem in SCSI-based systems involves the ability to seamlessly and readily integrate the multitude of peripheral devices into the host computer environment in a manner that avoids any compatibility problems. For example, due to the proliferation of peripheral devices from a vast number of OEMs (Original Equipment Manufacturers), system integrators typically face the problem of attempting to integrate external devices from a variety of vendors into the host computer environment. As a result, there typically is a behavioral variation between SCSI initiator and target operations that must be addressed before the system can be made fully functional.
The principal integration issue involves resolving the compatibility and interoperability problems concerning the relationship between the host-based SCSI initiator device and the external SCSI target device. In particular, it is necessary to ensure that the behavior of the various SCSI targets conforms to the operational expectations of the SCSI initiator. However, conventional strategies for suitably configuring the SCSI target are beset with difficulties because the approach usually involves piecemeal ad hoc solutions. For example, users typically need to interact repeatedly with both the SCSI initiator and target to facilitate the required configurations setup.
It is therefore seen that computer systems integrators must find appropriate solutions to readily configure SCSI target devices so as to ensure compatibility and interoperability with SCSI initiator devices. The ability of the SCSI initiator to access and intelligently communicate with any SCSI target device connected to the SCSI bus requires the target to exhibit a behavior compatible with the functioning of the SCSI initiator.
Typically, the target behavior requires adjustment, modification or other such alteration so as to place it in a condition that facilitates or enables access by the initiator. This behavior modification usually takes the form of reconfiguring the parameters that govern the behavioral aspects of the target. However, conventional approaches to such target reconfiguration lack uniformity and have proved unwieldy and cumbersome since the approach normally involves user intervention both at the host side and peripheral side.
For example, a user may need to interface with the peripheral device through a supplied control line if any such interaction is needed at the target side to manage aspects of the reconfiguration process. A user also may be required to manually alter various hardware-related settings in the target environment. This peripheral-side interaction also would be accompanied by user action taken at the host computer, such as executing a routine to pass command codes to the target.
SCSI commands are classified by the SCSI protocol as mandatory, optional, or vendor unique. However, in conventional schemes that do employ host-side command routines, attempts by the ordinary user to implement target reconfiguration typically do not employ vendor unique commands due to the level of expertise needed to understand and implement these commands. This limitation therefore affects the functionality and available number of operational configurations for the target.
What is therefore needed is a process that allows the host environment to fully configure the target device without any user intervention.
According to the present invention there is provided a method, apparatus, and computer program product for variously implementing a fully automatic reconfiguration feature capable of fully reconfiguring the behavior of a SCSI target device using a host system functionality. This functionality may employ suitable software, hardware, firmware, or any combination thereof. According to the invention, the validation process between the host (initiator) and target can be fully automated.
Generally, validation refers to the processes for verifying that a part or device works as expected. As used herein, according to one form of the invention, validation involves the use of suitable processes for determining that the peripheral SCSI devices connected to the host environment work in both the target and initiator mode. In particular, validation ensures compatibility and interoperability between the SCSI host adapter and SCSI peripheral device.
In one form, it may be considered that the validation routine is implemented with a communications layer between the host-based initiator and target that carries out the reconfiguration process.
For example, host-resident software may implement a validation procedure that employs a target command structure constructed from vendor specific or vendor unique command codes recognizable by the target. In particular, these vendor unique command codes are developed by the peripheral device manufacturer for purposes of controlling, setting, and otherwise managing the parameters and behavior of the device.
As understood herein, the automatic validation feature encompasses the capabilities and functionalities that enable the target device to be fully and completely reconfigured by execution of the command structure received from the initiator (i.e., SCSI host adapter), without any user intervention. As a result of this validation process, the target behavior is modified, altered, or otherwise adapted to the behavior of the SCSI host adapter or controller (i.e., initiator) to facilitate seamless interoperability. In one form, the validation process ensures that the peripheral SCSI device in the external environment can operate in both a target mode and an initiator mode.
For example, the command structure may be implemented in the form of a self-executing application client process resident on the initiator. This application client may be launched, for example, in response to a BIOS instruction issued from the host operating system or from a high-level utility or user application program resident within the host operating system environment.
Alternately, the SCSI host adapter or controller that encompasses the initiator-type functionality may include or have access to the reconfiguration command structure. Accordingly, a low-level process may be instituted by the initiator to effectuate the reconfiguration. For example, microcode embodying vendor-unique commands suitable to the target may be retrieved by the initiator and downloaded to the target for processing and execution.
Alternately, the reconfiguration process can be instituted by the SCSI initiator as part of an initialization process for the overall host computer system environment. Alternately, the SCSI initiator may institute or attempt reconfiguration each time an access request is made to the specified target. For this purpose, the initiator may first interrogate the target to determine if prior reconfiguration has taken place. If not, the initiator can proceed with the reconfiguration process.
In configurations where the SCSI host adapter assumes control of the reconfiguration process, the host adapter will preferably be equipped with suitable resident software and/or firmware designed to produce the behavioral modifications of the SCSI peripheral device.
In one illustrative form, the invention may be practiced as a client-server transaction such as a request for device service generated by the host-based initiator and directed to the peripheral target. For example, an application client residing within the initiator may invoke a procedure call to execute a SCSI command function directed to the target device. This request may take the form of a command such as the Execute Command remote procedure call. The initiator may alternately issue a task management function directed to the target.
The SCSI Execute Command includes a Command Descriptor Block (CDB) employing vendor specific commands recognizable by the target device. As known, the CDB will also include the appropriate command-specific parameters and other inputs needed by the target to implement and execute the commands.
In one exemplary form, the initiator directs automatic reconfiguration of the target using a SCSI WRITE BUFFER command to download vendor-specific microcode to a non-volatile memory space at the target. For example, the destination of such write command could be the target-resident configuration-type EPROM where configuration information is stored and referenced when needed by the target to effectuate a re-configuration. In particular, the microcode could be loaded into a target ROM space typically containing configuration files.
According to the invention, the command execution request directed from the initiator to the target fully defines the configuration process needed to modify the parameters/behavior of the target device in a manner sufficient to make it interoperable with the SCSI host adapter (i.e., initiator).
In another form, the command execution request that facilitates auto-configuration of the target is embodied as target driver software resident within the initiator.
The invention, in one form thereof, is directed to a method for use in combination with a SCSI target and a SCSI initiator. According to the method, a command construct is defined that includes vendor specific commands associated with the SCSI target. The command construct defines an automatic configuration process pertaining to the SCSI target. The SCSI initiator directs the command construct to the SCSI target. In response, the SCSI target processes the command construct to effect automatic configuration thereof in accordance with the command construct.
The automatic configuration process defined by the command construct facilitates behavioral modification of the SCSI target in a manner sufficient to conform SCSI target behavior to SCSI initiator behavior. For example, the automatic configuration process facilitates selective variation of SCSI target parameters and/or behavior.
In another form, it may be considered that the automatic configuration process facilitates automatic validation between the SCSI initiator and the SCSI target.
In another form, the command construct includes vendor specific microcode executable by the SCSI target. For this purpose, the command construct includes a SCSI write command facilitating the download of vendor specific microcode into a memory space of the SCSI target.
In yet another form, the command construct includes a Command Descriptor Block having vendor specific commands, command-specific parameter values, and/or input data.
The SCSI initiator is preferably configured as part of a host computer environment.
The method, in another form thereof, further involves invoking a process at the application layer in the host computer environment to direct the SCSI initiator to transport the command construct to the SCSI target.
The invention, in another form thereof, is directed to a system including, in combination, a SCSI bus, a SCSI target operatively connected to the SCSI bus, and a SCSI initiator operatively connected to the SCSI bus. The system further includes an executable code structure associated with the SCSI initiator. The executable code structure defines a target configuration process enabling automatic configuration of the SCSI target.
The SCSI target is operatively configured to receive and execute the code structure from the SCSI initiator to effect automatic configuration thereof.
The code structure, in one form thereof, defines parameters and/or behavior of the SCSI target. In another form, the code structure includes vendor specific commands associated with the SCSI target.
In another form, the code structure includes vendor specific microcode associated with and executable by the SCSI target. For this purpose, the SCSI target is configured to receive and store the vendor specific microcode from the SCSI initiator in a behavior configuration space.
The invention, in another form thereof, is directed to a computer program product for use in a host computer environment to facilitate communications between an initiator and a target. The host computer environment is configured with the initiator. The computer program product includes a computer usable medium having computer readable program code thereon. The computer readable program code includes, in combination, program code for defining a command construct suitable for use in automatically configuring the target, and program code for directing communication of the command construct to the target to cause automatic configuration of the target in accordance with the command construct.
In one form, the command construct includes vendor specific commands associated with and executable by the target.
In another form, the command construct includes vendor specific microcode loadable into and executable by the target.
The command construct preferably defines a target behavior sufficient to effectuate compatibility with initiator behavior. For example, the command construct may define a target configuration process enabling selective variation of target parameters and/or behavior.
One advantage of the invention is that the automatic target reconfiguration provides full compliance, conformity, and interoperability between the initiator behavior (i.e., SCSI host adapter) and target behavior.
Another advantage of the invention is that the host is equipped with an initiator-resident software driver routine that fully and automatically configures the target, thereby obviating any user intervention.
Another advantage of the invention is that any required modification to the target behavior can be made entirely under the direction and control of a command process issued by the host system environment.
Another advantage of the invention is that the command process for varying the behavior of the target employs vendor specific commands to enable the fullest possible range of target behavior modification.
Another advantage of the invention is that the auto-configuration feature can be used with standard target structures requiring no adaptations thereof since the initiator-resident command module employs vendor unique commands recognizable by the target.